package oj;

import java.util.Arrays;

public class LC395 {
    public int longestSubstring(String s, int k) {
        int ans=0;
        int n=s.length();
        int[] ret=new int[26];
        char[] ch=s.toCharArray();
        for(int p=1;p<=26;p++){
            Arrays.fill(ret,0);
            for(int i=0,j=0,tot=0,sum=0;i<n;i++){
                int u=ch[i]-'a';
                ret[u]++;
                if(ret[u]==1){
                    tot++;
                }
                if(ret[u]==k){
                    sum++;
                }
                while(tot>p){
                    int t=ch[j++]-'a';
                    ret[t]--;
                    if(ret[t]==0){
                        tot--;
                    }
                    if(ret[t]==k-1){
                        sum--;
                    }
                }
                if(tot==sum){
                    ans=Math.max(ans,i-j+1);
                }
            }
        }
        return ans;
    }
}
